package com.dq.service.sys.role;

import com.dq.exception.customException.AdminException;
import com.dq.domain.sys.role.SysRole;
import com.dq.domain.sys.role.SysUserRole;
import com.dq.domain.sys.user.user.base.SysUser;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @创建人 gewenzhen
 * @创建时间 2019/9/10
 * @描述
 */
public interface SysRoleService {
    List<Long> findAllDeptIdByRole(SysRole sysRole);

    List<Long> findAllMenuIdByRole(SysRole role);

    @Transactional
    void deleteBath(SysRole sysRole);


    public SysRole save(SysRole sysRole)  throws AdminException;
    public SysRole objectSaveBase(SysRole sysRole) throws AdminException;

    /**
     *修改
     * @param sysRole
     * @return
     * @throws AdminException
     */
    public SysRole update(SysRole sysRole) throws AdminException;

    /**
     * 用户角色中间表
     * 对象初始化
     * @param sysUserRole
     * @return
     * @throws AdminException
     */
    public SysUserRole initObjectUserRole(SysUserRole sysUserRole) throws AdminException;

    /**
     * 判断一个 用户 是否有管理者角色 或者 ID = 1
     * @param user 用户
     * @return boolean
     */
    public boolean isAdminRole(SysUser user);

    /**
     * 判断一个 用户 是否有 财务 角色
     * @param user 用户
     * @return boolean
     */
    public boolean isFinanceRole(SysUser user);
    /**
     * 判断一个 用户 是否有 仓库 角色
     * @param user 用户
     * @return boolean
     */
    public boolean isDepotRole(SysUser user);
    /**
     * 判断一个 用户 是否有 之账号 角色
     * @param user 用户
     * @return boolean
     */
    public boolean isBossSonRole(SysUser user);

    public boolean isRole(SysUser user, int i);
}
